package base

// User 用户数据对象
type User struct {
	Id              int64       `json:"id"`
	UserName        string      `json:"user_name"`
	Position        string      `json:"position"`
	Email           string      `json:"email"`
	Mobile          string      `json:"mobile"`
	OrgIds          []int64     `json:"org_ids"`
	Orgs            []*OrgItem  `json:"orgs"`
	RoleIds         []int64     `json:"role_ids"`
	Roles           []*RoleItem `json:"roles"`
	Passwd          string      `json:"passwd"`
	Status          int32       `json:"status"`
	CreatedOn       string      `json:"created_on"`
	ModifiedOn      string      `json:"modified_on"`
	OrgFullNameList []string    `json:"org_full_name_list"`
	RoleName        string      `json:"role_name"`
	OrgFullName     string      `json:"org_full_name"`
	//是否区域负责人，1:是，0：否
	DepartmentHeader int32 `json:"department_header"`
}

type Page struct {
	Page     int32 `json:"page"`
	PageSize int32 `json:"page_size"`
	Total    int32 `json:"total"`
}

// UserListParam 用户列表请求参数
type UserListParam struct {
	// 关键词搜索，手机号/姓名
	Keyword string `json:"keyword"`
	// 0: 全部，1:启用，2: 禁用
	Status int32 `json:"status"`
	// 组织编号
	OrgId int64 `json:"org_id"`
	// 页面信息
	Page     int32 `json:"page"`
	PageSize int32 `json:"page_size"`
}

// UserDeleteParam 用户删除请求参数
type UserDeleteParam struct {
	LeaveUserId   int64 `json:"leave_user_id"`
	ReceiveUserId int64 `json:"receive_user_id"`
}

type UserForbidParam struct {
	UserId int64 `json:"user_id"`
	Status int32 `json:"status"`
}

type UserAuthorizeParam struct {
	UserId  int64   `json:"user_id"`
	RoleIds []int64 `json:"role_ids"`
}

type UserInfoResponse struct {
	User   UserInfoItem   `json:"user" `
	Tenant TenantInfoItem `json:"tenant"`
}

type UserInfoItem struct {
	UserId        int64  `json:"user_id"`
	UserGuid      string `json:"user_guid"`
	Account       string `json:"account"`
	Name          string `json:"name"`
	Mobile        string `json:"mobile"`
	Email         string `json:"email"`
	Position      string `json:"position"`
	ResetPassword int64  `json:"reset_password"`
}

type TenantInfoItem struct {
	TenantCode string `json:"tenant_code"`
	TenantName string `json:"tenant_name"`
}

type SetPasswordRequest struct {
	NewPassword string `json:"new_password" binding:"required"`
}

type SetPasswordResponse struct{}

type SetDepartmentHeaderParam struct {
	// 部门编号
	OrgId int64 `json:"org_id"`
	// 用户编号
	UserIds []int64 `json:"user_ids"`
}

type ResetPasswordParam struct {
	// 用户编号
	UserId int64 `json:"user_id"`
	// 密码
	Passwd string `json:"passwd"`
}

type GetAllUserItem struct {
	Id       int64  `json:"id"`
	UserName string `json:"user_name"`
	Uid      string `json:"uid"`
}

type GetAllUserResponse struct {
	Total int32             `json:"total"`
	List  []*GetAllUserItem `json:"list"`
}

type GetAllUserRequest struct {
	Page     int32 `form:"page" binding:"required,min=1,max=100" err:"页码格式错误"`
	PageSize int32 `form:"page_size" binding:"required,min=1,max=600" `
}

type UserImportParam struct {
	// 文件ID
	FileId int64 `json:"file_id"`
	// 文件路径
	FilePath string `json:"file_path"`

	FileName string `json:"file_name"`
}

type UserImportResponse struct {
	// 文件下载路劲
	FilePath string `json:"file_path"`
	// 导入成功数
	SuccessRowsNum int64 `json:"success_rows_num"`
	// 导入失败数
	FailRowsNum int64 `json:"fail_rows_num"`
}

type UserMiniInfoDto struct {
	Id     int64  `json:"id"`
	Name   string `json:"name"`
	Mobile string `json:"mobile"`
}

type OrganizationWithUserDto struct {
	OrgId    int64                      `json:"org_id"`
	OrgName  string                     `json:"org_name"`
	Users    []*UserMiniInfoDto         `json:"users"`
	ChildOrg []*OrganizationWithUserDto `json:"child_org"`
}
